#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//有序序列合并
//方法二
int main()
{
	int n = 0;
	int m = 0;
	scanf("%d %d", &n, &m);
	int arr[2000];
	int i = 0;
	for (i = 0; i < n; i++)
	{
		scanf("%d", &arr[i]);
	}
	for (i = n; i <n+ m; i++)
	{
		scanf("%d", &arr[i]);
	}
	for (i = 0; i < n+m-1; i++)
	{
		int temp = 0;
		int j = 0;
		for (int j = 0; j < n+m-1-i; j++)
		{
			if (arr[j] > arr[j + 1])
			{
				temp = arr[j];
				arr[j] = arr[j +1];
				arr[j + 1] = temp;
			}
		}
	}
	for (i = 0; i < n+m; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}
//方法一
//int main()
//{
//	int n = 0;
//	int m = 0;
//	scanf("%d %d", &n, &m);
//	int arr1[1000] = { 0 };
//	int arr2[1000] = { 0 };
//	int i = 0;
//	for (i = 0; i < n; i++)
//	{
//		scanf("%d", &arr1[i]);
//	}
//	for (i = 0; i < m; i++)
//	{
//		scanf("%d", &arr2[i]);
//	}
//	i = 0;
//	int j = 0;
//	while (i < n && j < m)
//	{
//		if (arr1[i] < arr2[j])
//		{
//			printf("%d ", arr1[i]);
//			i++;
//		}
//		else
//		{
//			printf("%d ", arr2[j]);
//			j++;
//		}
//	}
//	for (; i < n; i++)
//	{
//		printf("%d ", arr1[i]);
//	}
//	for (; j < m; j++)
//	{
//		printf("%d ", arr2[j]);
//	}
//	return 0;
//}
//int i;
//int main()
//{
//    i--;
//    if (i > sizeof(i))//sizeof返回的是unsigned int 等级比int高，所以在比较的时候会进行整型提升
//    {
//        printf(">\n");
//    }
//    else
//    {
//        printf("<\n");
//    }
//    return 0;
//}